﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WallControl : MonoBehaviour {
    // 用于重复生成的墙壁预制件
    public GameObject wallPrefab;

    // 场景宽度(一次滚动的单位)
    public float stageWidth = 20.48f;

    // 一次滚动出现几组墙壁
    public int wallNum = 8;

    // 墙壁生成的最低高度
    public float wallMinHeight = -1f;

    // 墙壁生成的最高高度                  
    public float wallMaxHeight = 3.5f;

    // 所有墙壁的游戏对象数组
    private GameObject[] walls;

    // 当前墙壁的索引号
    private int currentWallIndex = 0;

    void Start () {

        // 初始化所有的足够数量的墙壁
        walls = new GameObject[wallNum];

        // 循环生成墙壁的位置
        for (int i = 0; i < wallNum; i++) {
            // 随机生成的高度
            float spawnYPosition = Random.Range (wallMinHeight, wallMaxHeight);
            // 利用Instantiate函数在场景中重复生成多个游戏对象，按照一定间隔分开两个屏幕(一轮滚动)之间保持距离
            walls[i] = (GameObject) Instantiate (wallPrefab, new Vector3 ((stageWidth * 2 / wallNum) * (i + 1), spawnYPosition, 0.0f), Quaternion.identity);
        }
    }

    // 更新 使根据经过时间重新分布柱子
    void Update () {

        // 如果游戏未结束
        if (GameControl.instance.gameOver == false && walls[currentWallIndex].transform.position.x < -stageWidth) {

            
            Debug.Log ("重置第" + (currentWallIndex+1) + "堵墙位置。");

            // 生成一个随机高度
            float spawnYPosition = Random.Range (wallMinHeight, wallMaxHeight);

            // 然后把墙往前重置
            walls[currentWallIndex].transform.position = new Vector3 (stageWidth, spawnYPosition, 0);

            // 开始计算下一堵墙

            currentWallIndex++;

            // 已经遍历到最后一个墙壁时
            if (currentWallIndex >= wallNum) {
                // 回归到计算第一个墙壁的位置
                currentWallIndex = 0;
            }
        }

    }
}